package org.gvp.generator.core.writer;

import org.gvp.generator.core.channel.FileWriterChannel;
import org.gvp.generator.props.CreateProps;
import org.gvp.generator.props.ProjectProps;
import org.gvp.generator.table.TableInfo;

import java.nio.file.Path;

/**
 * 文件写入接口
 */
public interface FileWriter {

    /**
     * 执行文件写入操作
     */
    void execute(TableInfo tableInfo, ProjectProps project);

    /**
     * 设置文件写入通道对象
     */
     void setFileWriterChannel(FileWriterChannel channel);

    /**
     * 当前文件是否需要写入到硬盘
     * @param create 配置属性
     * @return 如果反回true则写入文件，否则不写入
     */
    boolean isWriterFile(CreateProps create);

    /**
     * 获取写入文件路径
     * @param basePath 基础路径
     * @param project 项目配置
     * @param fileName 文件名称大驼峰
     */
    Path getFilePath(String basePath, ProjectProps project, String fileName);

}
